package cn.shutdown.demo.jvm;

import java.util.HashMap;
import java.util.Map;

/**
 * 最大的晋升年龄
 * MaxTenuringThreshold 默认值15
 * <p>
 * -Xmx1024M -Xms1024M -XX:+PrintGCDetails -XX:MaxTenuringThreshold=15 -XX:+PrintHeapAtGC -XX:-UseAdaptiveSizePolicy
 *
 * @author geym
 */
public class MaxTenuringThreshold {

    public static final int _1M = 1024 * 1024;
    public static final int _1K = 1024;

    public static void main(String args[]) {
        //创建一个map，往里面放了5M的数据，分5000次放
        //在map里面新建的这些byte数组有引用就不会被回收
        Map<Integer, byte[]> map = new HashMap<Integer, byte[]>();
        for (int i = 0; i < 5 * _1K; i++) {
            byte[] b = new byte[_1K];
            map.put(i, b);
        }

        //不断申请内存,相当于不断向eden区放数据，eden区满了，就会进行新生代GC
        //会将eden区的存活数据放到 from区
        for (int k = 0; k < 20; k++) {
            for (int i = 0; i < 270; i++) {
                byte[] g = new byte[_1M];
            }
        }
    }
}